package aceim.app.view.page.utils;
import java.util.Arrays;
import java.util.List;
import aceim.api.dataentity.FileProgress;
import aceim.app.MainActivity;
import aceim.app.R;
import aceim.app.dataentity.ActivityResult;
import aceim.app.dataentity.listeners.IHasFilePicker;
import aceim.app.dataentity.listeners.IHasFileProgress;
import aceim.app.view.page.Page;
import aceim.app.widgets.bottombar.BottomBarButton;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class Utilities extends Page implements IHasFilePicker, IHasFileProgress{
private static Util[] UTILS;
private UtilitiesAdapter mAdapter;
public Utilities() {}
@Override
public Drawable getIcon(Context context) {
return context.getResources().getDrawable(android.R.drawable.ic_menu_myplaces);
}
@Override
public String getTitle(Context context) {
return context.getString(R.string.utils);
}
@Override
protected View createView(LayoutInflater inflater, ViewGroup group, Bundle saved) {
View view = inflater.inflate(R.layout.utils, null);
UTILS = new Util[]{new AccountImporter(getMainActivity())};
BottomBarButton closeBtn = (BottomBarButton) view.findViewById(R.id.cancel);
closeBtn.setOnClickListener(mRemoveMeClickListener);
mAdapter = new UtilitiesAdapter(getMainActivity(), Arrays.asList(UTILS));
ListView list = (ListView) view.findViewById(R.id.list);
list.setAdapter(mAdapter);
return view;
}
interface Util {
View getView(LayoutInflater inflater);
}
private class UtilitiesAdapter extends ArrayAdapter<Util> {
public UtilitiesAdapter(Context context, List<Util> objects) {
super(context, android.R.id.title, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
Util u = getItem(position);
if (convertView != null && convertView.getTag() == u) {
view = convertView;
} else {
view = constructFromUtil(u);
}
view.setTag(u);
return view;
}
private View constructFromUtil(Util u) {
return u.getView(LayoutInflater.from(getContext()));
}
}
@Override
public void onFileProgress(FileProgress progress) {
if (progress.getServiceId() > -1) {
return;
}
for (Util u : UTILS) {
if (u instanceof IHasFileProgress) {
((IHasFileProgress)u).onFileProgress(progress);
mAdapter.notifyDataSetInvalidated();
}
}
}
@Override
public void onFilePicked(ActivityResult result, MainActivity activity) {
for (Util u : UTILS) {
if (u instanceof IHasFilePicker) {
((IHasFilePicker)u).onFilePicked(result, activity);
mAdapter.notifyDataSetInvalidated();
}
}
}
}